For more than 40 years, technologists have known that one way to lower computing costs is to simultaneously share resources across multiple components and/or machines. This concept eventually led to the so-called file/server networking model where multiple desktop computers were linked together to a server where files and printer resources could be shared. Given the success achieved in improved performance and lowered costs through virtual servers, companies have been diligently attempting to replicate their efforts with “virtual desktops”, which will now be explained.
As a user interfaces with a client computing system (hereinafter referred to as a “client”), the user is presented with a desktop environment. The desktop environment may include an intuitive visualization of various icons, windows, and other tools that user may interact with to manipulate the various applications and environments offered by the desktop environment.
As events occur (such as user input), the desktop environment is processed in a manner that is appropriate given the event, resulting in perhaps some change to the state of the desktop environment. Conventionally, such desktop processing occurs on the client. However, desktop virtualization involves the offloading of the desktop processing to a location other than the client (hereinafter referred to as a “centralized desktop location”), which location is perhaps even remote from the client. That offloaded location may be a server, a server cluster, or a server cloud.
The centralized desktop location maintains a virtual machine for each supported desktop environment. The virtual machine has access to all of the desktop state necessary to construct an image for how the desktop environment should appear. The virtual machine also manages the processing that serves up desktop images to the corresponding client, which are rendered by the client as they are received.
As the client interacts with the displayed desktop image, that client input is transmitted to the centralized desktop location. The corresponding virtual machine at the centralized desktop location interprets the client input, and processes the desktop. In response to this input, or in response to some other detected event, the virtual machine changes the state of the desktop if appropriate. If this changed state results in a change in how the desktop appears, the virtual machine constructs a different desktop image, and causes the centralized desktop location to transmit the altered desktop image to the client. From the user's perspective, this occurs often fast enough that the displayed desktop at the client is substantially immediately responsive to the user input at the client. The desktop as is exists on the centralized desktop location is often referred to as a “virtual desktop”, and the application-level logic on the centralized desktop that is used to process the desktop is often referred to a “virtual machine”.
Typically, the centralized desktop location may manage a number of virtual desktops for a corresponding number of clients. In some cases, the centralized desktop location may manage hundreds of virtual desktops. In some cases, the centralized desktop location is a physical machine, which is referred to herein as a “physical appliance”. The physical appliance provides software and data support (hereinafter referred to as the “support resources”) to the virtual machine(s). For instance, the operating system and certain applications may be provided by the physical appliance. Supporting data may also be included within the support resources. For instance, user data (such as persistent preference information) may also be stored by the physical appliance.
All of the software and data support resources are conventionally located on the physical machine itself. An alternative conventional solution occurs when an organization has multiple physical appliances. To provide backup, the organization will provide access to a storage area network (SAN) to multiple physical appliances, and store the software and data support resources on the SAN. If a failure were to occur with a physical appliance, the support resources are still available on the SAN from the other physical appliance. Thus, an instance of the physical machine may be constructed on the other physical appliance, and mapped to the corresponding software and data storage resources on the SAN, thereby effecting recovery.